module lang.language;

import utils.log;

import lang.ilexer;
import lang.iparser;
import lang.inamesvalidator;
import lang.isyntaxelement;

abstract class Language {
    protected static shared(Language) ourInstance;

    public static shared(Language) getInstance();

    protected INamesValidator myNamesValidator;
    protected IParser myParser;

    public shared(ISyntaxElement) analize(in string text) shared;

    public INamesValidator getNamesValidator() {
        return myNamesValidator;
    }
}
